<?php

/**
 * 模板引擎接口
 * @author ice.deng <ice.deng@qq.com>
 */
interface IRenderer
{
    public function __construct($templatePath = "", $attributes = []);

    public function render($template, array $data = []);
    /**
     * 获取对象的属性值
     *
     * php魔术方法,在未找到属性时会调用此方法
     * @param string $name 属性明
     * @return mixed 属性的值
     * @throws \Exception 如果属性未找到
     * @throws \Exception 如果属性为只写
     * @see __set()
     */
    public function __get($name);

    /**
     * 设置对象属性值
     *
     * php魔术方法,在未找到属性时会调用此方法
     * @param string $name 属性名称或事件名称
     * @param mixed $value 设置的属性值
     * @throws \Exception 属性未找到
     * @throws \Exception 属性为只读
     * @see __get()
     */
    public function __set($name, $value);
}